package club.xyes.zkh.ecommerce.wechat.service;

import club.xyes.zkh.ecommerce.commons.entity.Shop;
import club.xyes.zkh.ecommerce.wechat.dto.SaoBeiJsPayResult;
import club.xyes.zkh.ecommerce.wechat.dto.SaoBeiPayResult;
import club.xyes.zkh.ecommerce.wechat.dto.SaoBeiRefundResult;
import club.xyes.zkh.ecommerce.wechat.dto.TradeQueryResult;

import java.io.IOException;

/**
 * Create by 郭文梁 2019/4/19 0019 13:22
 * SaoBeiService
 * 扫呗支付相关服务
 *
 * @author 郭文梁
 * @data 2019/4/19 0019
 */
public interface SaoBeiService {
    /**
     * 微信小程序支付
     *
     * @param openId  用户OpenId
     * @param fee     金额 单位：分
     * @param tradeNo 交易记录号
     * @param shop    商铺信息
     * @return 支付结果
     * @throws IOException IO异常
     */
    SaoBeiPayResult microProgramPay(String openId, int fee, String tradeNo, Shop shop) throws IOException;

    /**
     * 查询交易状态
     *
     * @param tradeNo    交易号
     * @param outTradeNo 扫呗订单号
     * @param shop       Shop
     * @return 查询结果
     * @throws IOException IOE
     */
    TradeQueryResult query(String tradeNo, String outTradeNo, Shop shop) throws IOException;

    /**
     * 退款申请
     *
     * @param tradeNo 交易订单号
     * @param fee     退款金额
     * @param traceNo 退款流水号
     * @param shop    Shop
     * @return 申请结果
     * @throws IOException IO异常
     */
    SaoBeiRefundResult refund(String tradeNo, int fee, String traceNo, Shop shop) throws IOException;

    /**
     * 扫呗JS支付接口
     *
     * @param tradeNo 交易号
     * @param fee     支付金额
     * @return 支付结果
     */
    SaoBeiJsPayResult jsPay(String tradeNo, int fee,Shop shop);
}
